package codingInterview.leetcode.editor.cn;

//输入数字 n，按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3，则打印出 1、2、3 一直到最大的 3 位数 999。 
//
// 示例 1: 
//
// 输入: n = 1
//输出: [1,2,3,4,5,6,7,8,9]
// 
//
// 
//
// 说明： 
//
// 
// 用返回一个整数列表来代替打印 
// n 为正整数 
// 
// Related Topics 数组 数学 👍 190 👎 0

import java.lang.ref.WeakReference;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;

//Java：剑指 Offer 17 - 打印从1到最大的n位数
public class DaYinCong1daoZuiDaDeNweiShuLcof{
    public static void main(String[] args) {
                Solution solution = new DaYinCong1daoZuiDaDeNweiShuLcof().new Solution();
        // TO TEST
    }
    
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int[] printNumbers(int n) {
        int[] number = new int[n];
        int all = (int)Math.pow(10,n)-1;
        int[] res = new int[all];
        int a=0;
        number[0]=1; // 赋初值
        while (number[n-1]<10){
            res[a++] = calNumber(number);
            number[0]++; //加一
            int i =0;
            while(i<n-1 && number[i]>9){ // 处理进位
                number[i]=0;
                number[i+++1]++;
            }
        }
        return res;
    }

    int calNumber(int[] number){
        int res = 0;
        for (int i = 0; i < number.length; i++) {
            res+=Math.pow(10,i)*number[i];
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
